---
sidebar_position: 1
---

# Для программ на C

:::info

Данная статья основана на материале статьи ["Generating random number in a range in C"](https://www.geeksforgeeks.org/generating-random-number-range-c/).

:::

C не имеет встроенной функции для генерации числа в диапазоне, но у него есть функция `rand`, которая генерирует случайное число от `0` до `RAND_MAX`. С помощью `rand()` число в диапазоне может быть сгенерировано как

```c
num = (rand() % (upper - lower + 1)) + lower
```

Временная сложность: `O(N)` где `N` - количество генерируемых случайных чисел.

## Пример реализации генерации числа из диапазона

```c
#include <stdio.h>
#include <time.h>                                  // time
#include <stdlib.h>                                // srand, rand
#include <locale.h>


// Генерировать случайного целого числа из диапозона [lower, upper].
int iRandom(int lower, int upper) {
    // https://www.geeksforgeeks.org/generating-random-number-range-c/
    int num = (rand() % (upper - lower + 1)) + lower;
    return num;
}


int main() {
    setlocale(LC_ALL, "Russian");

    // это значение можно считать с клавиатуры
    int lower = 1, upper = 10;
    
    // использовать текущее время в качестве
    // начальное значение для генератора случайных чисел
    srand(time(0));

    // сброс первого числа, чтобы не
    // повторялось, пока srand не изменяется
    rand();
    int num = iRandom(lower, upper);
    printf("Случайное число из диапазона [%d, %d]: %d\n", lower, upper, num);

    return EXIT_SUCCESS;
}
```
